import { CATEGORY_TYPES, IHomeState, ISlider } from "@/typings/home";
import { Module } from "vuex"; // 用vuex自带的这个类型校验
import { IGlobalState } from "../index";
import * as Types from '../actions-types'
import { getSliders } from "@/api/home";

// 需要有状态
// 首页里应该存哪些数据
const state: IHomeState = {
  currentCategory: CATEGORY_TYPES.ALL,
  sliders: [],
  lessons: {
    hasMore: true, // 有没有更多数据
    loading: false, // 默认没有正在加载
    offset: 0, //
    limit: 5,
    list: [], // 当前已经显示到哦页面的额课程有哪些
  },

};

// 需要导出模块，那就得现有模块
// Module里面的参数：（1）自己的状态  （2）全局的状态
const home: Module<IHomeState, IGlobalState> = {
  namespaced: true,
  state,
  mutations: {
    [Types.SET_CATEGORY](state, payload: CATEGORY_TYPES) {
      state.currentCategory = payload;// 修改状态，将最新的值赋给状态
    },
    [Types.SET_SLIDER_LIST](state, payload: ISlider[]) {
      state.sliders = payload;
    }
  },
  actions: {
    async [Types.SET_SLIDER_LIST]({commit}) {
      const sliders = await getSliders<ISlider>();
      commit(Types.SET_SLIDER_LIST,sliders)
    }
  }
};

// 导出
export default home;
